Many applications pack multiple data objects in another data object. Examples of such applications include file systems, database management systems, computer-aided design (CAD) systems, programs and utilities that handle backup, restore and archiving of data, programs and utilities that manage emails and instant messages, etc. Examples of data objects include emails, instant messages, CAD designs, files, records, documents, ISO images, file system images, etc.
Such packing is attractive for several reasons. For example, it may help to overcome performance and/or scalability issues in supporting many objects. The packing may also make it easier to manage objects by keeping related objects together. Packing multiple objects and associated metadata together may also help to reduce dependencies on the system used to store the objects.
Once packed, however, the objects become difficult to access. Each application tends to have its own format or way of packing objects so that the objects must typically be accessed through the application that packed them. In many cases, the application that packed the objects may not be available when there is a need to access the objects. In addition, many of these applications do not provide direct access to the objects through standard interfaces. With some applications, the objects have to be unpacked before they can be accessed.
One approach to providing access to individual objects in a compound object is to determine the format of the compound object. There are, however, many different applications that pack objects and the formats they use tend to be proprietary and could change over time. Another approach is to extend the applications to provide a standard interface for accessing the individual objects but again there are numerous applications that pack objects.
Many of the applications provide a tool such as, for example, a computer program, application, or utility software to unpack the individual objects in which case an alternative is to unpack the compound object and store the individual objects so that the individual objects can be directly accessed. Such an approach, however, requires significant resources to perform the unpacking and to store the individual objects.